package site.kitcheng.springboottest.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

/**
 * <p>
 * 用户
 * </p>
 *
 * @author author
 * @since 2025-01-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_user")
@ApiModel(value="SysUser对象", description="用户")
public class SysUser implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "用户名")
    private String UserName;

    private String email;

    @ApiModelProperty(value = "组织ID")
    private Long organizationId;

    @ApiModelProperty(value = "用户密码")
    private String password;

    @ApiModelProperty(value = "用户真实姓名")
    private String realName;

    private String phone;

    @ApiModelProperty(value = "用户头像地址")
    private String imageUrl;

    private String language;

    @ApiModelProperty(value = "上一次密码更新时间")
    private LocalDateTime lastPasswordUpdatedAt;

    @ApiModelProperty(value = "上一次登陆时间")
    private LocalDateTime lastLoginAt;

    @ApiModelProperty(value = "最后登录IP")
    private String loginIp;

    @ApiModelProperty(value = "用户是否启用。1启用，0未启用")
    private Integer isEnabled;

    @ApiModelProperty(value = "是否锁定账户")
    private Integer isLocked;

    @ApiModelProperty(value = "是否是LDAP来源。1是，0不是")
    private Integer isLdap;

    @ApiModelProperty(value = "是否为管理员用户。1表示是，0表示不是")
    private Integer isAdmin;

    @ApiModelProperty(value = "锁定账户截止时间")
    private LocalDateTime lockedUntilAt;

    @ApiModelProperty(value = "密码输错累积次数")
    private Integer passwordAttempt;

    @ApiModelProperty(value = "uuid，主要用于ldap同步")
    private String uuid;

    private Long objectVersionNumber;

    private Long createdBy;

    private LocalDateTime creationDate;

    private Long lastUpdatedBy;

    private LocalDateTime lastUpdateDate;

    @ApiModelProperty(value = "快速索引")
    private String quickIndex;

    private String attribute1;

    private String attribute2;

    private String attribute3;

    private String attribute4;

    private String attribute5;

    private String attribute6;

    private String attribute7;

    private String attribute8;

    private String attribute9;

    private String attribute10;

    private String attribute11;

    private String attribute12;

    private String attribute13;

    private String attribute14;

    private String attribute15;



}
